package com.tanhua.server.service;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.tanhua.server.pojo.User;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

/**
 * @ClassName :  UserService
 * @Author : Tenebrous
 * @Date: 2020/12/10 20:25
 * @Description : 用户业务层
 */
@Service
public class UserService {

    @Autowired
    private RestTemplate restTemplate;

    private static final ObjectMapper MAPPER = new ObjectMapper();

    @Value("${tanhua.sso.url}")
    private String uri;

    /**
     * 调用SSO系统中的接口服务进行查询
     * @param token     用户token
     * @return          如果查询到，User对象，如果未查询到就返回null
     */
    public User queryUserByToken(String token) {
        // 通过restTemplate连接SSO，调用接口，获取到的时json格式数据
        // uri为当前ip
        String jsonData = this.restTemplate.getForObject(uri + "/user/" + token, String.class);

        if (StringUtils.isNotEmpty(jsonData)) {
            // 如果jsonData不为空
            try {
                // 反序列化
                return MAPPER.readValue(jsonData, User.class);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return null;
    }
}
